/**
 * @copyright Copyright (c) 2024 广州中海达卫星导航股份有限公司
 * @file cbb_enc_api.h
 * @brief 
 * @author 嵌入式软件部--黄宗强
 * @date 2024-08-22
 * @version V1.0.0
 * @details 定义编码器相关接口
 * @since 
 * @par 修改日志:
 * <table>
 * <tr><th>Date       <th>Version <th>Author  <th>Description
 * <tr><td>2024-08-22 <td>v1.0     <td>XXX     <td>内容
 * </table>
 */
#ifndef __CBB_ENC_API_H__
#define __CBB_ENC_API_H__

#include "cbb_enc_type.h"
#if defined (__cplusplus) || defined (c_plusplus)
extern "C" {
#endif

/**
 * @brief 初始化编码器的指定通道
 * @details 
 * @param
 * @return
 * @param [in] enc_conf 编码器配置
 * @return EncoderHandle @retval 返回编码器实例
 */
EncoderHandle CbbEncoderInit(CbbEncoderConf_t enc_conf);

/**
 * @brief 实时编码
 * @details 
 * @param
 * @return
 * @param [in] handle 调用 CbbEncoderInit返回的实例
 * @param [in] raw_frame 调用 CbbCameraReadFrame 返回的帧数据
 * @param [out] enc_res 编码返回的数据
 * @return CbbCameraAckE_t @retval 成功返回CBB_CAMERA_ACK_OK
 */
CbbCameraAckE_t CbbEncoderRun(EncoderHandle handle , const CbbCameraFrame_t raw_frame, CbbEncoderRes_t *enc_res);
/**
 * @brief 在不重新CbbEncoderInit的情况下，配置编码器
 * @details 
 * @param
 * @return
 * @param [in] handle 
 * @param [in] action 
 * @param [in] operate_p 
 * @return CbbCameraAckE_t @retval
 */
CbbCameraAckE_t CbbEncoderCtrl(EncoderHandle handle,const CbbEncoderActionE_t action,CbbEncoderCtrlDev_t  *operate_p);

/**
 * @brief 释放编码器
 * @details 
 * @param
 * @return
 * @param [in] handle 
 * @return CbbCameraAckE_t @retval
 */
CbbCameraAckE_t CbbEncoderDestroy(EncoderHandle handle);

/**
 * @brief 
 * @details 
 * @param
 * @return
 * @param [out] version_p  版本信息
 */
void CbbEncoderVersioin(CbbVersion_t *version_p);


#if defined (__cplusplus) || defined (c_plusplus)
}
#endif

#endif // __CBB_ENC_API_H